Data redundancy systems that have redundancy of two or more and are highly redundant and highly capacity efficient such as Erasure Coding are becoming popular. More specifically, redundancy systems employed in RAID (Redundant Arrays of Independent (or Inexpensive) Disks), Microsoft Azure ad Facebook and the like are some examples.
A storage system that employs a RAID is provided with a RAID group constituted of a plurality of storage devices (for instance, hard disk drives (HDDs). A storage area of the RAID group is constituted of a plurality of sub-storage area columns, a “stripe columns”, formed across a plurality of storage devices. Hereinafter, one sub-storage area of each storage device constituting the stripe column is referred to as a “stripe”.
RAIDs have some levels (hereinafter referred to as a “RAID level”).
For instance, in a RAID5, write target data specified by a host computer is divided into data of a predetermined size (hereinafter referred to as a “data unit”, for the sake of convenience), and each data unit is divided into a plurality of data elements, and the plurality of data elements are written on a plurality of the stripes, respectively.
In a RAID 5, redundant information called “parity” (hereinafter referred to as a “redundancy code”) is generated for one data unit, and the redundancy code is written on a stripe. When a failure occurs in a storage device and it becomes impossible to read a correct value of a data element that constitutes the data unit, the data element is restored by using the parity.
A RAID 6 is able to withstand even a double failure. In the RAID 6, two (two kinds of) redundant codes are generated for each stripe column. A double failure can be coped with by using the two redundant codes. PTL 1 discloses that a data error is detected by comparing two pieces of parity.